package savet.entidades.atributos;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import savet.entidades.Trabalhador;

@Entity
@Table
public class CAGED implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @OneToOne
    private AtributoData admisao;
    @OneToOne
    private AtributoData demissao;
    @OneToMany
    private List<AtributoData> atributosData;
    @Transient
    private Trabalhador trabalhador;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public AtributoData getAdmisao() {
        return admisao;
    }

    public void setAdmisao(AtributoData admisao) {
        this.admisao = admisao;
    }

    public AtributoData getDemissao() {
        return demissao;
    }

    public void setDemissao(AtributoData demissao) {
        this.demissao = demissao;
    }

    public List<AtributoData> getAtributosData() {
        return atributosData;
    }

    public void setAtributosData(List<AtributoData> atributoDatas) {

//        System.out.println("Trabalhador:" + trabalhador.getAdmissao());
        if (trabalhador.getAdmissao() != null) {
            for (AtributoData atributoData : atributoDatas) {

                if (atributoData.getData().before(trabalhador.getAdmissao())) {
                    atributoData.setEstado(Atributo.NAO_OBRIGATORIO);
                }
            }
        }
        if (trabalhador.getAfastamento() != null) {

            for (AtributoData atributoData : atributoDatas) {
                if (atributoData.getData().after(trabalhador.getAfastamento())) {
                    atributoData.setEstado(Atributo.NAO_OBRIGATORIO);
                }
            }
        }
        this.atributosData = atributoDatas;
    }

    public Trabalhador getTrabalhador() {
        return trabalhador;
    }

    public void setTrabalhador(Trabalhador trabalhador) {
        this.trabalhador = trabalhador;
    }
}
